Skip to content
导航栏

增加模型定义

模型定义

模型是对一个业务实体的抽象定义,是 Yao 中最重要的一个组件,有以下用途:

  • 使用模型描述业务实体,以及业务实体间的关联关系。
  • 根据模型自动生成数据库对应的表结构。
  • 根据模型自动生成界面配置。
  • 根据模型自动生成相关表的 CURD API 接口。

创建模型

模型定义文件都需要放在应用目录的 models 目录下。比如应用模板中就自带了两个示例模型。

  • admin.user.mod.yao 用户模型,用于保存管理员用户名密码,比如默认用户xiang@iqka.com就保存在这个模型对应的表中。
  • pet.mod.yao 示例宠物模型。
sh
├── models
   ├── admin
      └── user.mod.yao
   └── pet.mod.yao

模型文件可以使用后缀.yao,.jsonc,.json

先看示例中的模型文件定义:models/pet.mod.yao

jsonc
{
  "name": "::Pet",
  "table": { "name": "yao_demo_pet", "label": "宠物表" },
  "columns": [
    { "name": "id", "label": "ID", "type": "ID" },
    {
      "name": "name",
      "label": "昵称",
      "type": "string",
      "length": 80,
      "index": true,
      "nullable": true
    },
    {
      "name": "type",
      "label": "类型",
      "type": "enum",
      "option": ["cat", "dog", "others"],
      "index": true
    },
    {
      "name": "status",
      "label": "入院状态",
      "type": "enum",
      "option": ["checked", "curing", "cured"],
      "index": true
    },
    {
      "name": "mode",
      "label": "状态",
      "type": "enum",
      "option": ["enabled", "disabled"],
      "index": true
    },
    {
      "name": "online",
      "label": "是否在线",
      "type": "boolean",
      "default": false,
      "index": true
    },
    {
      "name": "curing_status",
      "label": "治疗状态",
      "type": "enum",
      "default": "0",
      "option": ["0", "1", "2"],
      "index": true
    },
    { "name": "stay", "label": "入院时间", "type": "integer" },
    { "name": "cost", "label": "花费", "type": "integer" },
    {
      "name": "images",
      "type": "json",
      "label": "相关图片",
      "nullable": true
    }
  ],
  "relations": {},
  "values": [],
  "indexes": [],
  "option": {
    "timestamps": true,
    "soft_deletes": true
  }
}

一般来说模型结构有以下的内容:

json
{
  "name": "用户",
  "table": {},
  "columns": [],
  "indexes": [],
  "relations": {},
  "values": [],
  "option": {}
}

详细的模型定义细节说明参考: Yao Model 定义

模型的内容比较多,在初学时重点关注 columns 与 table 节点的配置。

当你掌握与理解模型的定义与相关概念后,可以使用 AI 或是相关的工具辅助你快速生成模型。

使用 AI 创建模型

除了可以手动创建模型,还可以使用 Neo 助手调用 ChatGPT 创建模型。

使用 ChatGPT 开发 YAO 应用

Vscode 编辑器使用插件快速开发模型Neo 助手Neo 命令

使用 Yao-admin 自动生成模型

使用 Yao-admin 自动的根据数据库结构生成模型配置。

yao-admin

总结

在 Yao 应用开发中,模型的定义非常的关键,需要熟练与掌握。

善于利用脚本与 AI 工具,可以加快开发进度。